package chapter08;

import java.io.*;

public class Java03_IO_File_Copy {
    public static void main(String[] args) {
        // TODO Java IO - 文件复制

        // 数据源文件对象
        File srcFile = new File("D:\\practiceCode\\java-top-speed\\data\\word.txt");
        // 数据目的地文件对象(自动生成)
        File destFile = new File("D:\\practiceCode\\java-top-speed\\data\\word.txt.copy");

        // 文件输入流（管道对象）
        FileInputStream in = null;
        // 文件输出流（管道对象）
        FileOutputStream out = null;
        try {
            in = new FileInputStream(srcFile);
            out = new FileOutputStream(destFile);

            // 打开阀门，流转数据(输入)
//            int data = in.read();
            int data = -1;
            // 打开阀门，流转数据(输出)
//            out.write(data);

            // TODO 问题1：代码重复性高
            // TODO 问题2：多读数据
//            data = in.read();
//            out.write(data);
//
//            data = in.read();
//            out.write(data);
//
//            data = in.read();
//            out.write(data);
//
//            data = in.read();
//            out.write(data);
//
//            // TODO 如果文件数据已全部读取，那么再次读取数据，读取数据结果就是-1，表示无效（结尾）
//            data = in.read();
//            if (data != -1) {
//                out.write(data);
//            }
            while ((data = in.read()) != -1) {
                out.write(data);
            }


        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            // 关闭管道
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

}
